title Atlas Shrank
author James Noeckel
run_rules_on_level_start
flickscreen 18x11

========
OBJECTS
========

Background
#0e193f #202a4c #20324a #1f3649 #00003d
00004
13210
04000
10111
00032

Exit
#d0691d #9a521d #7b441c #ad5a1d #8e4c1c yellow
.222.
23140
23140
25140
23140

DoorO
#cf732f
0...0
0...0
0...0
0...0
0...0

Switch
#ec5656 #ec3232 #b31313
01.01
1...2
.....
0...2
12.22

Door
#d0691d #9a521d #7b441c #ad5a1d #8e4c1c
03412
04132
03112
01142
04112

ShadowDoor
black

ShadowDoorO
black

WallUD
#697490 #485b76 #8083ba #646f8a #6d7b96
23041
23041
23041
23041
23041

WallRL
#697490 #485b76 #8083ba #646f8a #6d7b96
22222
33333
00000
44444
11111

WallR
#697490 #485b76 #8083ba #646f8a #6d7b96
40401
03401
40031
03001
00001

WallL
#697490 #485b76 #8083ba #646f8a #6d7b96
20404
20430
23004
20030
20000

WallU
#697490 #485b76 #8083ba #646f8a #6d7b96
22222
00000
40300
03044
40430

WallD
#697490 #485b76 #8083ba #646f8a #6d7b96
04030
03400
04004
30304
11111

WallM
#697490 #485b76 #8083ba #646f8a #6d7b96
03040
34430
43340
44303
30030


Wallsolo
#697490 #485b76 #8083ba #a7aae3 #2d425e #646f8a #6d7b96
32220
20651
25561
26601
01114

PlayerS
#ffb173 #ff6464 #d7d7d7 #d74629
.000.
.101.
02220
03230
.0.0.

PlayerL
#ffb173 #ff6464 #d7d7d7 #d74629
.000.
.100.
.223.
.233.
.0.0.

PlayerR
#ffb173 #ff6464 #d7d7d7 #d74629
.000.
.001.
.322.
.332.
.0.0.

PlayerLH
#ffb173 #ff6464 #d7d7d7 #d74629
.0.0.
.100.
.220.
.233.
.0.0.

PlayerRH
#ffb173 #ff6464 #d7d7d7 #d74629
.0.0.
.001.
.022.
.332.
.0.0.

Crate
#9f7666 #c8917c #945a50 #8b4c42
.000.
00113
01123
01223
.333.

Heldcrate
#9f7666 #c8917c #945a50 #8b4c42
.000.
00113
01123
01223
.333.

Shadowcrate
black

H_pickup
red
.....
.....
..0..
.....
.....

H_drop
red
.....
.....
..0..
.....
.....

H_grav
gray
.....
.....
..0..
.....
.....

H_step
yellow
.....
.....
..0..
.....
.....

=======
LEGEND
=======

. = Background
# = Wallsolo
P = PlayerS
* = Crate
O = Exit
X = Door
T = Switch
@ = Switch and Crate
Wall = WallUD or WallRL or WallR or WallL or WallM or Wallsolo or WallU or WallD
Player = PlayerL or PlayerR or PlayerS or PlayerRH or PlayerLH
Solid = Player or Crate or Wall or Heldcrate or Door or Shadowcrate or Shadowdoor
Massive =  Crate
Helpers = H_pickup or H_drop or H_grav or H_step
Weight = Player or Crate

=======
SOUNDS
=======
SFX1 87921103
SFX2 82865707
SFX3 70226500
SFX4 68263307

SFX5 60968508
SFX6 358900
================
COLLISIONLAYERS
================

Background
Exit
Player, Solid
Helpers
DoorO, ShadowdoorO, Switch

======
RULES
======

(Wallify)
Vertical [ Wall | Wallsolo | Wall ] -> [ Wall | WallUD | Wall ]
Horizontal [ Wall | Wallsolo | Wall ] -> [ Wall | WallRL | Wall ]
Horizontal [ Wall | WallUD | Wall ] -> [ Wall | WallM | Wall ]
Left [ WallUD | Wall ] -> [ WallR | Wall ]
Right [ WallUD | Wall ] -> [ WallL | Wall ]
Up [ WallRL | Wall ] -> [ WallD | Wall ]
Down [ WallRL | Wall ] -> [ WallU | Wall ]

(steps)
up [ Player | no Solid ] -> [ Player | H_step ]
up [ Player | Heldcrate no H_step ] -> [ Player | Heldcrate H_step ]
[ Moving Player ] [ H_step ] -> [ Moving Player ] [ Moving H_step ]

(gravity)
down [ Player no H_grav | no Solid ] -> [ Player H_grav | ]
down [ Player ] [ H_grav ] -> [ > Player ] [ H_grav ] again
Down [ Massive ] -> [ down Massive ] again

[ up Player ] -> cancel

(movement/pushing)
Right [ > Player ] -> [ > PlayerR ]
Left [ > Player ] -> [ > PlayerL ]
Horizontal [ >  Player | Crate | no Solid ] -> [  >  Player | > Crate | ] SFX2

(picking up and holding crates)
Horizontal [ Crate | Action PlayerS | Crate ] -> message I am paralyzed with indecision!
Right [ Action PlayerR | Crate ] [Player no H_pickup ] -> [ Player | Shadowcrate ] [ Player H_pickup ] SFX1
Left [ Action PlayerL | Crate ] [Player no H_pickup ] -> [ Player | Shadowcrate ] [ Player H_pickup ] SFX1
([ Moving Player ] [ Heldcrate ] -> [ Moving Player ] [ Moving Heldcrate ])
([ > Player | no Solid ] [ Heldcrate ] -> [ > Player |  ] [ > Heldcrate ])
(late Up [ Player | no Solid ] [ Heldcrate ] -> [ Player | Heldcrate ] [ ])

(putting down)
(Left [ Action Heldcrate | no Solid ] [ PlayerLH ] -> [ | Crate ] [ PlayerL ]
Right [ Action Heldcrate | no Solid ] [ PlayerRH ] -> [ | Crate ] [ PlayerR ])
Right [ Heldcrate | no Solid ] [ Action PlayerRH ] -> [ Heldcrate | H_drop ] [ PlayerR ]
Left [ Heldcrate | no Solid ] [ Action PlayerLH ] -> [ Heldcrate | H_drop ] [ PlayerL ]


(steps late)
late [ H_step ] [H_grav ] -> [ ] [ H_grav ]
late Down [ H_step | Player ] -> [ | Player ]
late up [ H_step no Solid | no Solid ] [ Heldcrate ] -> [ H_step | Heldcrate ] [ ]
late [ H_step no Solid ] [ Player ] -> [ Player ] [ ] SFX4

(crate rules)
late [ Heldcrate ] [ H_drop ] -> [ ] [ Crate ]
late up [ Player | no Solid ] [ Heldcrate ] -> [ Player | Heldcrate ] [ ]

late Up [ H_pickup | no Solid ] [ Shadowcrate ] -> [ | Heldcrate ] [ ]
late [ Shadowcrate ] -> [ Crate ]
late Down [ Heldcrate | no Player ] -> [ Crate | ]

late up [ PlayerR ] [ Heldcrate ] -> [ PlayerRH ] [ Heldcrate ]
late up [ PlayerL ] [ Heldcrate ] -> [ PlayerLH ] [ Heldcrate ]


(cleanup)
late [ H_pickup ] -> [ ]
late [ H_grav ] -> [ ]
late [ H_step ] -> [ ]


late [ Player Exit ] -> SFX3

(doors)
late [ Door ] -> [ Shadowdoor ]
late [ DoorO ] -> [ ShadowDoorO ]
late [ ShadowdoorO no Solid ] [ ShadowdoorO Solid ] -> [ DoorO ] [ ShadowdoorO Solid ]
late [ Switch no Weight ] [ ShadowDoorO no Solid ] -> [ Switch ] [ Door ] SFX5
late [ Switch no Weight ] [ Shadowdoor ] -> [ Switch ] [ Door ]
late [ Shadowdoor ] -> [ DoorO ] SFX6
late [ ShadowdoorO ] -> [ DoorO ]

==============
WINCONDITIONS
==============
all Exit on Player

=======
LEVELS
=======
message Demoted again
###############
#.......O.....#
#.......#.....#
#......##.....#
#.....###.....#
#.P..####**...#
###############

message First gas planets, and now this
message [Pick up with x]
###############
#.............#
#...........O.#
#..........####
#..........#..#
#P..**...*.#..#
###############

##################
############.....#
#########*##.....#
#########*##.....#
####.....*....o..#
####.....*.#######
####.....*.#######
####.....*########
#####....*########
######..p*########
##################

###############
#..*###....#..#
#..*..........#
#..####.......#
#.**......**P.#
#.#############
#......*.#....#
#...*..#.X..O.#
#...##.#T######
###############

message what is even my job
*#####*###########
#*##.##.#...#....#
##.#..#..........#
#.....#*........O#
#......###.....###
#.........#....###
#......*..*....###
#....#############
#...#............#
#**..............#
#####...##########
****.#..##########
****..#..#########
****...#....######
****....#.......*#
*###....##......*#
*.....#####...####
#......###....####
*.......x..#######
##.#....x.########
.p.*.*ttx#########
##################

message I could lift these all day
######x###########
##*#..x.......#..#
###...x*......x.o#
#.....##.....*x.##
#....#xp..@..#x..#
#...##x###########
#*..*.x.....######
######x.....#....#
######x......*...#
######.#*....##..#
######.###########

##################
#............*...#
#..@......*.t@p..#
#xxx#xxxxxxxxxxx##
#.#.#...........##
#.#.#.#.#.#.#.#.##
#.#.#.#.#.#.#.#.##
#...#########.####
##....*x.....*...#
###...##....###.o#
##################

##################
##...........x...#
##...........x.*.#
##.........t####.#
##..........#....#
##..........#....#
##...***#####.##x#
##...***##.o..###*
##...***####.....#
##.p.***##.......#
##################

message I miss the reassuring weight of a globe across my shoulders
#.................
#..#.#.#.#.......#
#..#.#.#.#.......#
#..#.#.t*........#
#..#.#*###.......#
#...*.*...*......#
*..#####.###.....#
#.*.........#...*#
####.......*....##
##t*.p.....#.##.##
##t###t#x#########
##t#####x#########
##t##.......######
####.........#####
###...........####
##......o......###
#......###......##
.................#
..................

.....................##*#*****....*...................
..o....##.#.######....##******...**.........#.........
..#.###############....####*********........#........*
################.#.##..x############........#........#
#####............#..#..x....................#.........
###.#............#..#.*x....................#.........
#.*.#................#####..................#.........
#***#............#*....*..p**.........t.*..#.........*
#####...........######################.#####.........#
#..............#########################...##.........
#.............#########.#.#.#...............#**.......
#............#########..#.#.#...............####......
#............########..#*#*#*#..............#.########
#............########..#*#*#*#..............#.#....###
#*...........#####......#.#.#...............#.#......#
#*.......#######........#...................#.#......#
#*......######..............................#.#......#
#*.....#..##............*...................#.#......#
#**...**......*.......#.#.#.#..........t....#.#.....##
#####*#######**###########################*######*####

*#***#*.#...##....#...........########...............*#................#
*#***#*.....#.....*...........#.#.#.#................*#................#
*#***##.....#.....**...#.#....*.*.*..................##................#
*#***#......#.....##...#.#....########...............##................#
*#***......*#.....##*..#.#....##***###...............#*................#
*#**#......#......*#####.#########**##...............##................#
*#**.......#......***##...###....##**####............##..........*.....#
*#**.......#......***......#......##*##*#............xx..........##....#
##*###############****............##****#............xx............#...#
##*################****.....#..o..##*#**#p....@.@.@..xx....@.@.@...**..#
####################################*##*################################

.................############*#.#.##
.................#..*........*.....#
.................#.t###....*########
#................#.....*...#o......#
#.....................##########...#
#....................#.....**.....*#
#................##.#....###x#######
#...............###.#*.......*.....#
#.........*..###############x###...#
##....p..**................*......*#
############################x#######
....................................

message Congratulations!
message You rearranged the rubble!
message the end